数学 : 内積(ドット積)
ベクトルの内積(Dot Product)
ベクトル $ \vec{A} , $ \vec{B} のなす角を$ \theta 、$ \vec{A} の長さを $ |A| , $ \vec{B} の長さを $ |B| とおくと、以下が成り立つ。
$ \vec{A}・\vec{B} = |A|・|B|・cos \theta
内積(2次元)
ベクトル$ \vec{A} = \binom{x_1}{y_1}, \vec{B} = \binom{x_2}{y_2}の内積$ \vec{A}・\vec{B}は以下のように計算できる。
$ \vec{A}・\vec{B} = \binom{x_1}{y_1}・\binom{x_2}{y_2} = {x_1}{x_2} + {y_1}{y_2}
例) ベクトル(1, 2), (3, 4)の内積を計算してみる
(1, 2)・(3, 4) = 1・3 + 2・4 = 3 + 8 = 11
内積(3次元)
ベクトル$ \vec{A} = \begin{pmatrix} {x_1} \\\ {y_1} \\\ {z_1} \end{pmatrix}, \vec{B} = \begin{pmatrix} {x_2} \\\ {y_2} \\\ {z_2} \end{pmatrix}の内積$ \vec{A} \cdot \vec{B}は以下のように計算できる。
$ \vec{A} \cdot \vec{B} = \begin{pmatrix} {x_1} \\\ {y_1} \\\ {z_1} \end{pmatrix} \cdot \begin{pmatrix} {x_2} \\\ {y_2} \\\ {z_2} \end{pmatrix} = x_1 x_2 + y_1 y_2 + z_1 z_2
内積の使用例 : 3Dリアルタイムレンダリング
3Dリアルタイムレンダリングにおいてベクトルの内積の性質を知っていることがどれだけ重要かについて解説する
内積を使用すると、面と光がなす角度を求めることができる
内積の使用例 : パーリンノイズ
1. 勾配ベクトルの値を計算
2. 距離ベクトルの値を計算
3. 勾配ベクトルと距離ベクトルの内積の値を計算
4. サンプル値の位置をフェード関数を使って調整
5. 計算した内積からフェード関数で調節されたサンプル値の位置の内積値を線形補間で求める
内積 関連リンク
【内積】ベクトル内積の意味をイメージで学ぶ。射影とは?なす角とは?
【数Bベクトル】内積の意味を太陽光発電で理解する 内積量を面積で見える化
【GLSL(シェーダー)】立体的に見せる方法〜光の反射は『内積』で〜『レイマーチング』入門(2)
WebGL開発に役立つベクトルの内積 (Three.js編)
その他 リンク
ノイズの話 - Pentanium Blog?